Java建立二叉排序树和平衡树

建立二叉排序树,是从前往后扫描数组,可以不保证高度最小,从头节点依次向下寻找要插入的适当位置。
建立平衡树,可以先将数组进行排序,然后选取中间元素作为根节点,数组中间元素左边的元素为根节点的左子树,数组中间右边的元素为根节点的右子树。
再对右子树和右子树选取中间节点,进行建树操作。
代码:

package easy;
import easy.JavaTree;
import easy.TreeNode;
public class BinarySortTree {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//        int shuzu []= {3,1,2,5,0,7,9,8};
//        TreeNode root = new TreeNode(shuzu[0]);    //以3这个数为根节点
//        for( int i = 1 ; i < shuzu.length ; i ++){
//
//        SortBinaryTree(root, shuzu[i]);  
//        }
		int shuzu []= {0,1,2,3,5,7,8,9};
		
        preorder(createminheighttree(shuzu, 0, shuzu.length -1));



	}
	//递归数组从头到尾建立二叉树,可能不平衡
	public static TreeNode SortBinaryTree(TreeNode node,int i){
		 
		 
		if(node == null){
			node = new TreeNode(i);
			return node;
		}
		else{
			if(i <= node.val){
 
				node.left =  SortBinaryTree(node.left, i);
			}
			else{
				node.right = SortBinaryTree(node.right,i);
			}
			
			return node;
		}
 
	}
	//建立平衡二叉排序树
	 public  static TreeNode  createminheighttree(int a [] , int start  , int end ){
		 
		   if(end < start){
		     return null;
		   }
		   int min = (start + end) / 2;
		   TreeNode  root = new TreeNode(a[min]);
		   root.left = createminheighttree(a, start, min -1);
		   root.right = createminheighttree(a, min+ 1, end);
		   return root;
	  }

	public static void preorder(TreeNode root){
		if(root!=null){
			System.out.println(root.val);
			preorder(root.left);
			preorder(root.right);
		}
		
	}


}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值